#ifndef	CAMERA_H
#define	CAMERA_H

#include <cmath>

class Camera{
    //Time-based Camera that offers pan, zoom and rotation.
    //The operations are based in the Phisics equation ds = v * dt.

    public:
        //Axis for rotation and panning.
        static const bool X_AXIS = true;
        static const bool Y_AXIS = false;

        //Cam coordinates
        double eyeX, eyeY, eyeZ;
        
        //View vector
        double lx , ly , lz;

        //Pan vector in X axis. This vector is orthogonal to the view and normal (0,1,0) vectors.
        double pxX , pyX , pzX;

        //Pan vector in Y axis. This vector is orthogonal to the view and (1,0,0) vectors.
        double pxY , pyY , pzY;

        //Angle of the view vector relative to the X axis (in radians)
        double angleX;

        //Angle of the view vector relative to the Y axis (in radians)
        double angleY;
        
        double speed;
        
        Camera();
        Camera(double speed,double eyeX,double eyeY,double eyeZ , double lx , double ly , double lz);
        
        void zoom(double dt);
        void pan(double dt , bool axis);
        void rotate(double dt , bool axis);
        void pointTo(double x , double y , double z);
};
#endif
